package com.ictest.detectionflow.mobile;

import java.io.File;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.Editable;
import android.text.Selection;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;

/**
 * 照片留言活动。
 * 
 * @author zanezeng
 * 
 */
public class PictureViewActivity extends Activity
{

	/**
	 * 名称键值。
	 */
	public final static String KEY_NAME = "picture_name";

	/**
	 * 路径键值。
	 */
	public final static String KEY_PATH = "picture_path";

	/**
	 * 临时文件键值。
	 */
	public final static String KEY_TEMP = "picture_istemp";

	/**
	 * 是否预览键值。
	 */
	public final static String KEY_ISPREVIEW = "picture_ispreview";

	/**
	 * 文件序号。
	 */
	public final static String KEY_INDEX = "picture_index";

	/**
	 * 日志标记。
	 */
	private final static String LOG_TAG = "PictureViewActivity";

	/**
	 * 预览图片。
	 */
	private Bitmap m_PreviewImage;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		// 调用基类实现
		super.onCreate(savedInstanceState);

		// 设置内容视图
		setContentView(R.layout.activity_picture_view);

		// 获得意图
		Intent intent = PictureViewActivity.this.getIntent();

		// 获得预览控件
		ImageView imgPreview = (ImageView) this.findViewById(R.id.imgPreview);

		try
		{
			// 获得图片路径
			File imageFile = (File) intent.getSerializableExtra(PictureViewActivity.KEY_PATH);

			// 创建图片
			this.m_PreviewImage = Utility.getBitmapFromFile(imageFile, imgPreview.getWidth(), imgPreview.getHeight());

			// 设置图片
			imgPreview.setImageBitmap(this.m_PreviewImage);
		}
		catch (Exception ex)
		{
			// 记录日志
			Log.e(LOG_TAG, "预览图片的过程中发生错误。\r\n" + ex.toString());

			// 提示信息
			Toast.makeText(this, "预览图片的过程中发生错误。", Toast.LENGTH_LONG).show();

			// 设定返回值
			PictureViewActivity.this.setResult(Activity.RESULT_CANCELED);

			// 结束活动
			PictureViewActivity.this.finish();
		}

		// 获得名称编辑框
		EditText txtName = (EditText) this.findViewById(R.id.txtName);

		// 获得名称
		String name = intent.getStringExtra(PictureViewActivity.KEY_NAME);

		// 设置名称
		txtName.setText(name);

		// 创建定时器
		Timer timer = new Timer();

		// 启动定时器
		timer.schedule(new TimerTask()
		{
			@Override
			public void run()
			{
				// 获得地址输入框
				EditText txtName = (EditText) findViewById(R.id.txtName);

				// 获得软键盘管理器
				InputMethodManager imm = (InputMethodManager) txtName.getContext().getSystemService(INPUT_METHOD_SERVICE);

				// 显示软键盘
				imm.showSoftInput(txtName, 0);

				// 调度到主线程
				PictureViewActivity.this.runOnUiThread(new Runnable()
				{
					public void run()
					{
						// 获得地址输入框
						EditText txtName = (EditText) findViewById(R.id.txtName);

						// 获得编辑的文字
						Editable editable = txtName.getEditableText();

						// 全部选中
						Selection.setSelection(editable, 0, editable.length());

					}
				});
			}

		}, 500);

		// 获得确定按钮
		ImageButton cmdOK = (ImageButton) this.findViewById(R.id.cmdOK);

		// 挂接点击事件
		cmdOK.setOnClickListener(new OnClickListener()
		{
			// 处理点击事件
			public void onClick(View v)
			{
				// 获得地址输入框
				EditText txtName = (EditText) findViewById(R.id.txtName);

				// 获得名称
				String name = txtName.getEditableText().toString();

				// 判断是否输入了内容
				if (null == name || name.length() == 0)
				{
					// 提示信息
					Toast.makeText(PictureViewActivity.this, "请填写图片名称。", Toast.LENGTH_LONG).show();

					// 全部选中
					txtName.selectAll();

					// 设置焦点
					txtName.requestFocus();

					// 返回
					return;
				}

				// 获得意图
				Intent intent = PictureViewActivity.this.getIntent();

				// 保存名称
				intent.putExtra(KEY_NAME, name);

				// 设定返回值
				PictureViewActivity.this.setResult(Activity.RESULT_OK, intent);

				// 结束活动
				PictureViewActivity.this.finish();
			}
		});

		// 获得确定按钮
		ImageButton cmdCancel = (ImageButton) this.findViewById(R.id.cmdCancel);

		// 挂接点击事件
		cmdCancel.setOnClickListener(new OnClickListener()
		{
			// 处理点击事件
			public void onClick(View v)
			{
				// 获得意图
				Intent intent = PictureViewActivity.this.getIntent();

				// 获得是否为临时文件
				if (intent.getBooleanExtra(PictureViewActivity.KEY_TEMP, false))
				{
					// 获得图片路径
					File imageFile = (File) intent.getSerializableExtra(PictureViewActivity.KEY_PATH);

					// 删除文件
					imageFile.delete();
				}

				// 设定返回值
				PictureViewActivity.this.setResult(Activity.RESULT_CANCELED, intent);

				// 结束活动
				PictureViewActivity.this.finish();
			}
		});

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		return true;
	}

	@Override
	protected void onDestroy()
	{
		// 调用基类实现
		super.onDestroy();

		// 清除图片
		if (null != this.m_PreviewImage)
		{
			// 清除图片
			this.m_PreviewImage.recycle();

			// 清除图片引用
			this.m_PreviewImage = null;
		}
	}

}
